package com.itheima.controller;

import com.itheima.annotation.LogOperation;
import com.itheima.pojo.Clazz;
import com.itheima.pojo.Pagination;
import com.itheima.pojo.PageResult;
import com.itheima.pojo.Result;
import com.itheima.service.ClazzService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 部门管理
 */
@RestController
@Slf4j
@RequestMapping("/clazzs")
public class ClazzController {
    @Autowired
    private ClazzService clazzService;

    /**
     * 查询所有部门数据
     * @return
     */
    @GetMapping
    //分页查询
  public Result list(Pagination clazzPage){
        log.info("分页查询，参数：{}",clazzPage);
        PageResult<Clazz> deptList = clazzService.finAll(clazzPage);
        return Result.success(deptList);

    }


    /**
     * 删除部门
     * @param id
     * @return
     */
    @DeleteMapping("/{id}")
    public Result delete(@PathVariable  Integer id){
        log.info("删除部门，id为：{}",id);
        clazzService.delect(id);
        return Result.success();
    }

    /**
     * 添加部门
     * @param clazz
     * @return
     */
    @LogOperation//添加日志注解
    @PostMapping
    public Result add(@RequestBody Clazz clazz ){
        log.info("添加部门，部门信息：{}",clazz);
        clazzService.add(clazz);
        return Result.success();
    }

    /**
     * 根据id查询部门
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id){
        log.info("查询部门，部门id：{}",id);
        // clazzService.getById(id);
        //把你传入的 id 值包装成一个成功的响应返回，例如
        //{
        //  "code": 200,
        //  "message": "success",
        //  "data": 1  // 这个 data 就是你传的 id
        //}
        //这里写成这个的话包装的返回值就是id了，不是需要的clazz，所以需要包装成这个接他，
       Clazz clazz = clazzService.getById(id);
        if (clazz == null) {
            return Result.error("部门不存在");
        }
        return Result.success(clazz);

    }

    /**
     * 修改班级的数据信息
     * @return
     */
    @PutMapping
    public Result getBylist(@RequestBody Clazz clazz){
        log.info("查询班级数据，参数：{}",clazz);
        clazzService.updeptAS(clazz);
        return Result.success();
    }

    /**
     * 该接口用于查询所有班级信息
     * @return
     */
    @GetMapping("/list")
    public Result getList(){
        log.info( "查询班级列表，参数");
        List<Clazz> clazzList = clazzService.getList();
        return Result.success(clazzList);

    }




}
